Game software, application programs, and other software systems typically include a UI that employs visual, audio, and other sensory interactions with a user to exchange information with the user, i.e., by enabling both input and output of information. For example, drop-down menus, graphical buttons, dialog boxes, synthesized speech, and other UI software objects in graphical UIs generally enable a user to select and execute functions and receive messages. These UI objects can be customized, and all sensory aspects of the UI can often be modified by selecting a skin to customize the appearance, audio, and other aspects of the UI. Skins may be applied to the UI in application programs, such as Microsoft Corporation's MEDIA PLAYER™, to change the overall appearance of the UI. However, skins do not change the underlying functions of the UI, but instead, simply change the look of the graphic components. For instance, the visual appearance of data selection lists, data entry fields, and other UI objects that are required for various functions of an application program can be customized with different graphical borders, backgrounds, text, and other visual characteristics. However, the functions performed by the application program remain the same, even though the skin is changed. If new functions are added to the application program, any corresponding skins must be modified to recognize the new function. Alternatively, the developer of the new function can create a separate UI for that function. Clearly, a separate UI for a new function is likely to be very noticeable, and possibly confusing, to users.
On a larger scale, an application program often has a different UI than an underlying operating system. For example, a personal computer (PC) operating system typically employs a desktop graphical UI with a graphical workspace and a number of selectable icons that enable a user to invoke application programs or perform other functions associated with the operating system. The workspace and icons usually have visual characteristics such as colors, borders, shadowing, and other characteristics that are not consistently carried into application programs. Instead, each application program typically provides its own workspace, toolbar buttons, menus, and other features with visual characteristics that are optimized for the tasks of the application program. These visual differences are also noticeable in regard to the functions within application programs and the functions provided by the operating system.
However, in many circumstances, it is desirable to enable a user to access operating system functions from an application program, or to enable a user to access functions of one application program from another application program. For third-party developers, it is also desirable to add functions to an application program without having to create a separate UI or fully integrate the new function into the UI code of the application program. In such cases, it would be desirable to provide a consistent UI to reduce a user's need to understand different UI characteristics, to reduce user confusion, and to otherwise provide a consistently familiar experience. For example, users of limited-capability devices, such as game consoles and hand-held devices, would benefit from a consistent UI to access new and old functions of various programs and the underlying operating system. In particular, a game program typically has its own distinct visual and audio characteristics for facilitating UI functions, such as selecting game options and entering game-related data. However, games also frequently employ UI functions that are part of the game console's underlying operating system, such as those associated with network communications to enable a user to participate in game play over the Internet or other network. To make the network communication function appear to be integrated with the game, it is desirable to apply the game's visual, audio, and other sensory characteristics to the operating system's network communication functions.
Conversely, as is evident by the popularity of skins, users and/or developers often prefer to apply a custom UI that provides unique visual, audio, animation, or other sensory aspects to functions provided by programs or functions provided by the operating system. Thus, it is desirable, to enable users and/or developers to change the sensory aspects of programs and the operating system without having to change the associated functional aspects. Accordingly, there is a need for a modular approach to UIs that separates functional features from sensory aspects so that changes to one can be implemented without the need to change the other. In addition, such a modular approach should provide consistent sensory aspects to application program functions, operating system functions, third-party functions, added functions, or other functional features that involve user interaction.